﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bacon_FTP_Client
{
    class CommandsDictionary
    {
        /// <summary>
        /// Dictionary that contains all the commands supported by the FTP Client.
        /// </summary>
        public Dictionary<string, string> cmdDictionary;
        /// <summary>
        /// CommandsDictionary constuctor
        /// </summary>
        public CommandsDictionary()
        {   
            //Initialization.
            cmdDictionary = new Dictionary<string, string>();
            
            ///User Command.
            cmdDictionary.Add(Constants.userCmd, Constants.userCmd);
            ///Password Command.
            cmdDictionary.Add(Constants.passCmd, Constants.passCmd);
            ///Account Command.
            cmdDictionary.Add(Constants.acctCmd, Constants.acctCmd);
            ///Change Working Directory Command.
            cmdDictionary.Add(Constants.cwdCmd, Constants.cwdCmd);
            ///Change Parent Directory Command.
            cmdDictionary.Add(Constants.cdupCmd, Constants.cdupCmd);
            ///Structure Mount Command.
            cmdDictionary.Add(Constants.smntCmd, Constants.smntCmd);
            ///Reinitialize Command.
            cmdDictionary.Add(Constants.reinCmd, Constants.reinCmd);
            ///Quit Command.
            cmdDictionary.Add(Constants.quitCmd, Constants.quitCmd);
            ///Port Command.
            cmdDictionary.Add(Constants.portCmd, Constants.portCmd);
            ///Pasive Mode Command.
            cmdDictionary.Add(Constants.pasvCmd, Constants.pasvCmd);
            ///Type Command.
            cmdDictionary.Add(Constants.typeCmd, Constants.typeCmd);
            ///Structure Command.
            cmdDictionary.Add(Constants.struCmd, Constants.struCmd);
            ///Mode Command.
            cmdDictionary.Add(Constants.modeCmd, Constants.modeCmd);
            ///Retrieve Command.
            cmdDictionary.Add(Constants.retrCmd, Constants.retrCmd);
            ///Store Command.
            cmdDictionary.Add(Constants.storCmd, Constants.storCmd);
            ///Store Unique Command.
            cmdDictionary.Add(Constants.stouCmd, Constants.stouCmd);
            ///Append Command.
            cmdDictionary.Add(Constants.appeCmd, Constants.appeCmd);
            ///Allocate Command.
            cmdDictionary.Add(Constants.alloCmd, Constants.alloCmd);
            ///Restart Command.
            cmdDictionary.Add(Constants.restCmd, Constants.restCmd);
            ///Rename From Command.
            cmdDictionary.Add(Constants.rnfrCmd, Constants.rnfrCmd);
            ///Rename To Command.
            cmdDictionary.Add(Constants.rntoCmd, Constants.rntoCmd);
            ///Abort Command.
            cmdDictionary.Add(Constants.aborCmd, Constants.aborCmd);
            ///Delete Command.
            cmdDictionary.Add(Constants.deleCmd, Constants.deleCmd);
            ///Remove Directory Command.
            cmdDictionary.Add(Constants.rmdCmd, Constants.rmdCmd);
            ///Make Directory Command.
            cmdDictionary.Add(Constants.mkdCmd, Constants.mkdCmd);
            ///Print Working Directory Command.
            cmdDictionary.Add(Constants.pwdCmd, Constants.pwdCmd);
            ///List Working Directory Command.
            cmdDictionary.Add(Constants.listCmd, Constants.listCmd);
            ///Name List Command.
            cmdDictionary.Add(Constants.nlstCmd, Constants.nlstCmd);
            ///Site Parameters Command.
            cmdDictionary.Add(Constants.siteCmd, Constants.siteCmd);
            ///System Command.
            cmdDictionary.Add(Constants.systCmd, Constants.systCmd);
            ///Status Command.
            cmdDictionary.Add(Constants.statCmd, Constants.statCmd);
            ///Help Command.
            cmdDictionary.Add(Constants.helpCmd, Constants.helpCmd);
            ///No Operations Command.
            cmdDictionary.Add(Constants.noopCmd, Constants.noopCmd);
        }
    }
}
